package stream.demo;

import java.util.ArrayList;
import java.util.List;

/**
 * 简介
 * 作者： 李志伟
 * 日期： 2020/4/23
 * 时间： 14:38
 */
public class StreamTest {

    /**
     * 现有两个ArrayList集合存储队伍当中多个成员姓名，
     * 要求使用传统的for循环依次进行一下若干操作步骤。
     *
     * 1、第一个队伍只要名字长度为3的成员；存储到一个新集合中
     * 2、第一个队伍赛选之后只要前3个人；存储到一个新集合中
     * 3、第二个队伍只要姓张的成员；存储到一个新集合中
     * 4、第二个队伍赛选之后不要前2个人；存储到一个新集合中
     * 5、将两个队伍合并到一个新的集合中
     * 6、根据姓名创建Person类并存到新的集合中
     * 7、打印整个Person队伍的对象信息
     */
    public static void main(String[] args) {
        // 第一只队伍
        List<String> one = new ArrayList<>();
        one.add("迪丽热巴");
        one.add("宋远桥");
        one.add("苏星河");
        one.add("石破天");
        one.add("石中玉");
        one.add("老子");
        one.add("庄子");
        one.add("洪七公");

        // 1、第一个队伍只要名字长度为3的成员；存储到一个新集合中
        List<String> one2 = new ArrayList<>();
        for (String name : one) {
            if (name.length() == 3) {
                one2.add(name);
            }
        }

        // 2、第一个队伍赛选之后只要前3个人；存储到一个新集合中
        List<String> one3 = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            one3.add(one2.get(i));
        }


        // 第二只队伍
        List<String> two = new ArrayList<>();
        two.add("古力拉扎");
        two.add("张无忌");
        two.add("赵丽颖");
        two.add("张三丰");
        two.add("尼古拉斯赵四");
        two.add("张天爱");
        two.add("张二狗");


        // 3、第二个队伍只要姓张的成员；存储到一个新集合中
        List<String> two2 = new ArrayList<>();
        for (String s : two) {
            if (s.startsWith("张")) {
                two2.add(s);
            }
        }

        // 4、第二个队伍赛选之后不要前2个人；存储到一个新集合中
        List<String> two3 = new ArrayList<>();
        for (int i = 2; i < two2.size(); i++) {
            two3.add(two2.get(i));
        }

        // 5、将两个队伍合并到一个新的集合中
        List<String> concat = new ArrayList<>();
        concat.addAll(one3);
        concat.addAll(two3);


        // 6、根据姓名创建Person类并存到新的集合中
        List<Person> people = new ArrayList<>();

        for (String str : concat) {
            people.add(new Person(str));
        }


        // 7、打印整个Person队伍的对象信息
        for (Person person : people) {
            System.out.println(person.name());
        }
    }
}
